package jj.tt.dd;

/**
 * 静态代理
 */
public class TestClothProduct {
    public static void main(String[] args) {
        //创建被代理的对象
        NikeCloth nikeCloth=new NikeCloth();
        //创建代理类的对象,传入被代理类的对象,那么在执行代理的方法时,实际执行的就是被代理类中的方法;
        ProxyFactory proxyFactory=new ProxyFactory(nikeCloth);
        proxyFactory.productCloth();


    }
}
//接口
interface ClothFactory{
    void productCloth();
}

//被代理类
class NikeCloth implements ClothFactory{
    public String name;
    @Override
    public void productCloth() {
        System.out.println("Nike 生产的一批衣服..");
    }
}

//代理类
class ProxyFactory implements ClothFactory{
    public ClothFactory clothFactory;

    //创建代理的时候,实际传入的是一个被代理类的对象;
    public ProxyFactory(ClothFactory clothFactory){
        this.clothFactory=clothFactory;
    }

    //执行代理类的方法时,实际执行的是被代理类中相同的方法;
    //因为代理类和被代理类都实现了相同的接口;
    @Override
    public void productCloth() {
        System.out.println("代理类开始收费");
        clothFactory.productCloth();
    }
}


